package com.woniu.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu.commons.exception.YogaException;
import com.woniu.model.dto.CoachDto;
import com.woniu.model.dto.VenueDto;
import com.woniu.model.entity.YCoach;
import com.woniu.model.entity.YVenue;
import com.woniu.model.param.*;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 胡歌
 * @since 2024年05月22日
 */
public interface YVenueService extends IService<YVenue> {
    /**
     *
     * @param mobile 场馆发送注册短信
     * @return
     */
    void venueRegisterCode(String mobile);

    /**
     *form 场馆短信注册账号
     * @param
     * @return
     * @throws Exception
     */

    void CodeRegister(VenueRegisterParam param)throws Exception;
    /**
     *form 场馆账号密码登录
     * @param
     * @param
     * @return 返回整个登录成功的场馆
     * @throws Exception 当场馆密码或者账号出现错误时 抛出异常
     */
    VenueDto venueLogin(venueLoginParam param);

    /**
     *修改场馆信息  传入需要修改的参数
     * @param
     * @return 返回修改后的场馆对象
     */
    YVenue updateVenue(AdminUpdateVenueParam param);


    YVenue updateVenueState(UpdateVenueStateParam param);

    /**
     * 场馆修改密码  修改密码需要先传入之前的密码，然后在修改密码   新旧密码不能是重复的
     * @param
     * @return
     */
    void UpdateVenuePassword( UpdateVenuePasswordParam param)throws Exception;


    /**
     * 分页查询所有场馆
     * @param
     * @return
     * @throws YogaException
     */
    public Page<YVenue> pageAllVenue(PageParam param)throws YogaException;

    /**
     *
     * @param param 教练手机号验证码登录
     * @return 返回登录成功教练对象
     * @throws Exception 可能验证码错误抛出异常
     */
    VenueDto codeLogin(VenueCodeLoginParam param)throws Exception;

    /**
     *
     * @param mobile 手机号登录 发送验证码需要的手机号
     * @throws Exception 可能手机号未注册抛出异常
     */
    void LoginCodePhone(String mobile)throws Exception;

    /**
     * 从token拿名字回去
     * @param venueId
     * @return
     * @throws YogaException
     */
    public String loadVenueName(String venueId)throws YogaException;

    /**
     * 从token拿对象回去
     * @param
     * @return
     * @throws YogaException
     */
   public YVenue loadMyVenue(String venueId )throws YogaException;
}
